home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / minix / includ~1.z / includ~1 / varargs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-10-11  |  1.0 KB  |  52 lines

  1. #ifndef _VARARGS_H
  2. #define _VARARGS_H
  3.  
  4. /*  varargs.h  */
  5.  
  6. #ifndef __GNUC__
  7. typedef char *va_list;
  8.  
  9. #define  va_dcl        int va_alist;
  10. #define  va_start(p)    (p) = (va_list) &va_alist;
  11. #define  va_arg(p,type)    ( (type *) ((p)+=sizeof(type)) )[-1]
  12. #define  va_end(p)
  13.  
  14. #else
  15.  
  16. /* These macros implement traditional (non-ANSI) varargs
  17.    for GNU C.  */
  18.  
  19. #define va_alist  __builtin_va_alist
  20. #define va_dcl    int __builtin_va_alist;
  21. #define va_list   char *
  22.  
  23. #define va_start(AP)  AP=(char *) &__builtin_va_alist
  24. #define va_end(AP)
  25.  
  26. #define __va_rounded_size(TYPE)  \
  27.   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
  28.  
  29. #define va_arg(AP, TYPE)                        \
  30.  (AP += __va_rounded_size (TYPE),                    \
  31.   ((TYPE *) AP)[-1])
  32.  
  33. #endif /* __GNUC__ */
  34.  
  35. #ifdef __STDC__
  36. #ifndef __NO_PROTO__
  37. int vsprintf(char *,const char *, char *);
  38. int vprintf(const char *, char *);
  39. int vfprintf(FILE *, const char *, char *);
  40. #else
  41. int vsprintf();
  42. int vprintf();
  43. int vfprintf();
  44. #endif
  45. #else
  46. extern int vsprintf();
  47. extern int vprintf();
  48. extern int vfprintf();
  49. #endif
  50.  
  51. #endif /* _VARARGS_H */
  52.